#ifndef PRIMALDUALSOLUTION_H_
#define PRIMALDUALSOLUTION_H_

#include <ext/hash_set>
namespace stdext
{
	using namespace __gnu_cxx;
}

#include "graphsupport/solve/facilitylocation/PrimDualSolvContext.h"

class PrimalDualSolution
{
public:
	static int createWitnessForCity( PrimDualSolvContext & scontext, int city );
	static bool createWitnessForAllCities( PrimDualSolvContext & scontext );
	static int findWitnessForCity( PrimDualSolvContext & scontext, int city );

	static void computeSpecialEdgesSquareSubgraph( PrimDualSolvContext & scontext );

	static bool isSpecialEdge( PrimDualSolvContext & scontext, int city, int facility );
	static bool isTightEdge( PrimDualSolvContext & scontext, int city, int facility );

	static void computeMaximalIndependentSet( PrimDualSolvContext & scontext );

	static void computeFacilityAssociations( PrimDualSolvContext & scontext );
	static void openCheapestForNotExist( PrimDualSolvContext & scontext );
};

#endif /* PRIMALDUALSOLUTION_H_ */
